Digital content distribution systems conventionally include a content server, a content player (also referred to herein as a “client”), and a communications network connecting the content server to the content player. The content server is configured to store digital content files, which can be downloaded from the content server to the content player. Each digital content file corresponds to a specific identifying title, such as “Gone with the Wind,” which is familiar to a user. The digital content file typically includes sequential content data, organized according to playback chronology, and may comprise audio data, video data, or a combination thereof. The content player is configured to download and play a digital content file, in response to a user request selecting the title for playback. Playback typically involves a technique known in the art as “streaming,” whereby the content server sequentially transmits the digital content file to the content player, and the content player plays the digital content file while content data is received that comprises the digital content file. Importantly, proper playback of digital content files requires that both the content server and the content player operate according to a set of standards.
Typically, a small number of content servers provide the digital content files to a large number of content players that are manufactured using various hardware and software platforms, e.g., television systems, cable box systems, set top box systems and videogame systems. To maintain uniform functionality across these various content players, manufacturers are often required to certify that their device is compatible with the set of standards before being sold to consumers. However, proving compatibility requires rigorous testing of the content player and, further, requires high-bandwidth network access. One test often performed is to check the quality of video output of the content player against a known reference video.
Traditionally, the video comparison involves the comparison of consecutive frames, each of which frame includes a large number of pixels where each pixel is represented by a Y, U and V value (or R, G, B value). Comparing each of these YUV values for every pixel in every frame in a video stream is very resource intensive, and therefor limiting in most cases.